﻿namespace SW.Lite.Core.Template
{
    /// <summary>
    ///     Interface ITemplateParser
    /// </summary>
    public interface ITemplateParser
    {
        /// <summary>
        ///     Parses the specified template content.
        /// </summary>
        /// <param name="templateContent">Content of the template.</param>
        string Parse(string templateContent);

        /// <summary>
        ///     Parses the specified template content.
        /// </summary>
        /// <typeparam name="TModel">The type of the t model.</typeparam>
        /// <param name="templateContent">Content of the template.</param>
        /// <param name="model">The model.</param>
        string Parse<TModel>(string templateContent, TModel model);

        /// <summary>
        ///     Parses the file.
        /// </summary>
        /// <param name="filePath">The file path.</param>
        string ParseFile(string filePath);

        /// <summary>
        ///     Parses the file.
        /// </summary>
        /// <typeparam name="TModel">The type of the t model.</typeparam>
        /// <param name="filePath">The file path.</param>
        /// <param name="model">The model.</param>
        string ParseFile<TModel>(string filePath, TModel model);
    }
}